﻿using System.Collections.Generic;
namespace LVYAN.Model
{
    public class BaiLianRequestGeneration
    {
        /// <summary>
        /// 
        /// </summary>
        public BaiLianInput input { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public BaiLianParameters parameters { get; set; }
    }
    public class BaiLianInput
    {
        /// <summary>
        /// 长期记忆体ID。
        /// </summary>
        public string memory_id { get; set; }
        
        /// <summary>
        /// 用户当前输入的期望模型执行指令，支持中英文。
        /// </summary>
        public string prompt { get; set; }
        /// <summary>
        /// 对话历史会话唯一标识，传入session_id后，将在云端进行对话历史记录，调用大模型将自动携带存储的对话历史
        /// </summary>
        public string session_id { get; set; }
        /// <summary>
        /// 工作流和插件需要做自定义参数透传时，或者插件需要进行用户级鉴权的参数透传时，通过该字段进行传递
        /// </summary>
        public Dictionary<string, object> biz_params { get; set; }

    }



    public class BaiLianParameters
    {
        /// <summary>
        /// 是否输出检索召回处理过程信息。开启后，将返回文档检索召回和模型推理的过程信息
        /// </summary>
        public bool has_thoughts { get; set; }

        /// <summary>
        /// 控制在流式输出模式下是否开启增量输出，即后续输出内容是否包含已输出的内容。设置为True时，将开启增量输出模式，后面输出不会包含已经输出的内容，您需要自行拼接整体输出；设置为False则会包含已输出的内容。        默认False。
        /// </summary>
        public bool incremental_output { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public BaiLianrag_options rag_options { get; set; }


    }
    public class BaiLianrag_options
    {
        /// <summary>
        /// 参与索引的知识库主键ID，即CreateIndex接口返回的Data.Id。如果您在应用中配置了指定知识库，同时通过该字段传入了指定知识库ID，就可以对配置的和传入的所有指定知识库内的文档进行检索。例如：在应用中配置了2个知识库，同时通过该字段传入了3个知识库ID，那么检索范围就是这5个知识库内的所有文档。        可传入的知识库上限5个。
        /// </summary>
        public string[] pipeline_ids { get; set; }
        /// <summary>
        /// 参与知识索引的文档主键 ID，即AddFile - 添加文档接口返回的文件ID，您也可以在数据管理页面，单击ID图标获取。非结构化数据检索时，将需要检索的文档ID传入该字段中进行指定文档的检索。        可传入的文档ID，该文档必须存在于配置的知识库或传入的知识库中。
        /// </summary>
        public string[] file_ids { get; set; }
        /// <summary>
        /// 结构化数据过滤器。        检索时使用该参数，通过传入结构化数据表头和对应取值的键值对，保证只有特定的数据参与应用的知识索引。可以是多个，取交集，仅对结构化知识库生效。
        /// </summary>
        public Dictionary<string, object> structured_filter { get; set; }
        /// <summary>
        /// 文档标签过滤器。        该字段将使得只有拥有所有标签的知识库文档才会参与应用的知识索引。 可以是多个tag，取交集。
        /// </summary>
        public string[] tags { get; set; }
    }


}
